/*
 *  Key.h
 *  glow
 *
 *  Created by sunjun on 11-6-14.
 *  Copyright 2011 sunstdio. All rights reserved.
 *
 */

//////////////////////////////////////////////////////////////////////////

#ifndef __Key__
#define __Key__

//////////////////////////////////////////////////////////////////////////

#if defined __cplusplus

//////////////////////////////////////////////////////////////////////////

NAMESPACE_BEGIN(Engine)

//////////////////////////////////////////////////////////////////////////

	// this class provides an object-oriented key interface.
	class Key : public GReference
	{
	public:
		// constructor
		Key(const CHAR*name, GReference* ptr);

		// destructor
		~Key();

		// get the name
		const CHAR* Name();

		// get the pointer
		GReference* Ptr();		
		
	private:
		Str mName; GReferencePtr mPtr;

		// find/add/remove a key
	public:
		static Key* Find(const CHAR* name);
	private:		
		static VOID Add(const CHAR* name, const Key* key);
		static VOID Remove(const CHAR* name);
	};

	//////////////////////////////////////////////////////////////////////////

	typedef GPtr<Key>KeyPtr;	

//////////////////////////////////////////////////////////////////////////

NAMESPACE_END

//////////////////////////////////////////////////////////////////////////

#endif // __cplusplus

//////////////////////////////////////////////////////////////////////////

#endif // __Key__

//////////////////////////////////////////////////////////////////////////